﻿/*------------------------------------------------------------------------

VERTEXREGISTRYDDD3D9.HPP v1.0.2

Copyright 楊志賢 CxxlMan, 2014 - 2015
All Rights Reserved

DD_D3D9 內部用，RD 未定義

------------------------------------------------------------------------*/

#if !defined(__VERTEXREGISTRYDDD3D9_HPP_Cxxl3D)
#define __VERTEXREGISTRYDDD3D9_HPP_Cxxl3D

#include <Render\Render_Win32\Render_Win32_D3D\RENDER_WIN32_D3D9.HPP>
#include <Sys\RenderUnit\SysDatagramDisposal_D3D\VERTEXDDD3D9.HPP>

// 元件介面的識別碼
#define IVertexRegistryD3D9_ClassID L"AD7A8F1B6315450eB43E4A258F816BBD"

template <typename VERTEXFMT>
class CVertexDD;


namespace Cxxl3D
{

// 用於登記目前作用中的 IVertexDD
class IVertexRegistryDDD3D9:public IDatagramDisposal_D3d9
{
  // 登記目前作用中的 IVertexDD
  virtual void cxxlFASTCALL Set(const CxxlMan::Smart_Ptr<IVertexDD> &IVertexDD_Arg) = 0;

public:
  // Constructor
  IVertexRegistryDDD3D9()
    :cxxlObject(CxxlMan::Spirit_Easy)
  {
  }

  // Destructor
  virtual ~IVertexRegistryDDD3D9()
  {}

  // 取得目前登記作用中的 IVertexDD
  virtual CxxlMan::Smart_Ptr<IVertexDD> cxxlFASTCALL Get() = 0;

  template <typename VERTEXFMT>
  friend class CVertexDD;

};



}   /* namespace Cxxl3D */
#endif
